﻿using System;
using MadMediaManager.WPFSupport.Interfaces.ViewModels;
using MadMediaManager.WPFSupport.Interfaces.Views;
using MadMediaManager.WPFSupport.Services;

namespace MadMediaManager.WPFSupport.Interfaces.Services
{
    public interface IViewManager
    {
        /// <summary>
        /// Transitions to the specified viewKey.  If the view does not exist, it is created.
        /// </summary>
        /// <typeparam name="TView">The type of view to transition to</typeparam>
        /// <param name="viewKey">The unique key fo the view</param>
        /// <param name="transition"></param>
        void TransitionTo<TView>(ViewKey<TView> viewKey, TransitionType transition) 
            where TView : INavigableView;
        void TransitionTo(ViewKey viewKey, TransitionType transition);
        void TransitionToHome();
        void Remove(ViewKey viewKey, TransitionType transition);
    }
}
